home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / mnyth3 / manythng.bas < prev    next >
BASIC Source File  |  1995-05-09  |  23KB  |  598 lines

  1. ' ManyThng.BAS -- This is my attempt at a variable screen saver
  2. '   It is based on an example in "Learn Programming and Visual Basic 2.0"
  3. '   by John Socha and Sybex Inc., (highly recommended)
  4.  
  5. ' first written 4-15-93 Bruce McLean
  6. '
  7. Option Explicit
  8.  
  9. '
  10. ' These variables support saving the maximum number of lines
  11. ' in the CONTROL.INI file, which is where the Windows 3.1
  12. ' screen savers save setup information.
  13. '
  14. Global MaxLines As Integer      ' Lines to show before CLS
  15. Global RepeatCount As Integer   ' # of lines the same color
  16. Global MaxChangeMinutes As Single   ' minutes to go before changing color
  17. Global MaxCums As Integer      ' total number of lines before clearing screen
  18. Global BitmapsDir As String ' place to look for bitmaps
  19. Global CycleBitmapsDir As String ' place to look for bitmaps for palette cycling
  20. Global BmpSeconds As Integer ' seconds between bitmaps on slide show
  21. Global RandomFlag As Integer ' non-zero means pick saver at random, else go in sequence
  22. Global StartSaver As Integer ' zero means pick 1st saver at random, else start with saver the corresponds to value
  23. Global ErrorTrace As Integer ' flag to log data for error tracing
  24. Global LowMemoryFlag As Integer 'set this to run special low memory mode
  25. Global TestMode As Integer 'this mode is for debugging code
  26. Global Passwd As String 'where master password is stored
  27. Global Const Scramble = "soDSM" 'to scramble password
  28. Global PasswdScram As String 'scrambled password
  29. Global TotalNumColors As Long 'place to store number of colors display can handle
  30. Global PaletteHandle As Integer
  31. Global FastPaletteCycleFlag As Integer
  32.  
  33. Global Const iniName = "CONTROL.INI"
  34. Global Const secName = "Screen Saver.Many Things"
  35. Global Const keyName = "MaxLines"
  36. Global Const RepeatName = "RepeatCount"
  37. Global Const ChangeMinutesName = "MaxChangeMinutes"
  38. Global Const MaxCumsName = "MaxCumLines"
  39. Global Const BmpsDirName = "BitmapsDir"
  40. Global Const CycleBmpsDirName = "CycleBitmapsDir"
  41. Global Const BmpSecondsName = "BmpSeconds"
  42. Global Const RandomFlagName = "RandomFlag"
  43. Global Const LowMemoryFlagName = "LowMemoryFlag"
  44. Global Const StartSaverName = "StartSaver"
  45. Global Const ErrorTraceName = "ErrorTrace"
  46. Global Const PasswordName = "Password"
  47. Global Const PriorityBaseName = "Priority"
  48. Global Const FastPaletteCycleName = "FastPaletteCycle"
  49.  
  50. Global Const NUMCHARS = 25
  51.     
  52. ' windows defines
  53. Type RECT
  54.     left As Integer
  55.     top As Integer
  56.     right As Integer
  57.     bottom As Integer
  58. End Type
  59.  
  60. 'Polygon routine that draws any arbitray polygon using fill, etc.
  61. Type POINTAPI
  62.     X As Integer
  63.     Y As Integer
  64. End Type
  65.  
  66. ' paint type
  67. Type PAINTSTRUCT     '32 Bytes
  68.     hDC As Integer
  69.     fErase As Integer
  70.     rcPaint As RECT
  71.     fRestore As Integer
  72.     fIncUpdate As Integer
  73.     rgbReserved As String * 16
  74. End Type
  75.  
  76. Global Const PALENTRIES = 256
  77.  
  78. '   This is similar to the LOGPALLETTE defined in
  79. '   APIDECS.BAS, however instead of using a buffer, we
  80. '   create a 64 entry palette for our use.
  81.  
  82. Type PALETTEENTRY    '4 Bytes
  83.     peRed As String * 1
  84.     peGreen As String * 1
  85.     peBlue As String * 1
  86.     peFlags As String * 1
  87. End Type
  88.  
  89. Type LOGPALETTE
  90.     palVersion As Integer
  91.     palNumEntries As Integer
  92.     palPalEntry(PALENTRIES) As PALETTEENTRY
  93. End Type
  94.  
  95. Global Pal As LOGPALETTE
  96.  
  97. 'Many things DLL routines used:
  98. Declare Function ManyDibAlloc Lib "mnythdll.dll" (ByVal Wdth As Integer, ByVal Hght As Integer) As Long
  99. Declare Function ManyDibFree Lib "mnythdll.dll" () As Integer
  100. Declare Function ManyDibGet Lib "mnythdll.dll" () As Long
  101. Declare Function ManyDibGetData Lib "mnythdll.dll" () As Long
  102. Declare Function ManyDibLoad Lib "mnythdll.dll" (ByVal FileName As String, Wdth As Integer, Hght As Integer) As Long
  103. Declare Function ManyGifLoad Lib "mnythdll.dll" (ByVal FileName As String, Wdth As Integer, Hght As Integer) As Long
  104. Declare Function ManyDibInit Lib "mnythdll.dll" () As Long
  105. Declare Sub ManyDibModPalette Lib "mnythdll.dll" (ByVal red As Integer, ByVal green As Integer, ByVal blue As Integer)
  106. Declare Sub ManyDibCyclePalette Lib "mnythdll.dll" (ByVal StepSize As Integer, ByVal LowValue As Integer, ByVal HighValue As Integer)
  107. Declare Sub ManyLoadLogPal Lib "mnythdll.dll" (Pal As LOGPALETTE, ByVal Start As Integer, ByVal size As Integer, ByVal Flags As Integer)
  108. Declare Function ManyDIBWrite Lib "mnythdll.dll" (ByVal FileName As String) As Integer
  109.  
  110.  
  111. ' Windows API Routines used:
  112. Declare Function ShowCursor Lib "USER" (ByVal fShow As Integer) As Integer
  113. Declare Sub BitBlt Lib "GDI" (ByVal DestDC As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal BWidth As Integer, ByVal BHeight As Integer, ByVal SourceDC As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal Constant As Long)
  114. Declare Function StretchBlt Lib "GDI" (ByVal hDC As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hSrcDC As Integer, ByVal XSrc As Integer, ByVal YSrc As Integer, ByVal nSrcWidth As Integer, ByVal nSrcHeight As Integer, ByVal dwRop As Long) As Integer
  115. Declare Function CopyRect Lib "User" (lpDestRect As RECT, lpSourceRect As RECT) As Integer
  116. Declare Function CreateDC Lib "GDI" (ByVal Driver As Any, ByVal Dev As Any, ByVal O As Any, ByVal Init As Any) As Integer
  117. Declare Sub DrawIcon Lib "User" (ByVal hDC As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal hIcon As Integer)
  118. Declare Function GetCursor Lib "User" () As Integer
  119. Declare Sub GetCursorPos Lib "User" (lpPNT As Integer)
  120. Declare Function GetDeviceCaps Lib "GDI" (ByVal hDC As Integer, ByVal nIndex As Integer) As Integer
  121. Declare Function LockResource Lib "Kernel" (ByVal hRes As Integer) As Long
  122. Declare Sub UnlockResource Lib "Kernel" Alias "GlobalUnlock" (ByVal hRes As Integer)
  123. Declare Sub FloodFill Lib "GDI" (ByVal hDC As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal color As Long)
  124. Declare Function Polygon Lib "GDI" (ByVal hDC As Integer, lpPoints As POINTAPI, ByVal nCount As Integer) As Integer
  125. Declare Function SetPolyFillMode Lib "GDI" (ByVal hDC As Integer, ByVal nPolyFillMode As Integer) As Integer
  126. Declare Function GetNearestColor Lib "GDI" (ByVal hDC As Integer, ByVal crColor As Long) As Long
  127. Declare Function GetDeviceCaps Lib "GDI" (ByVal hDC As Integer, ByVal nIndex As Integer) As Integer
  128. Declare Function SetSysModalWindow Lib "User" (ByVal hWnd As Integer) As Integer
  129. Declare Function SystemParametersInfo Lib "User" (ByVal uAction%, ByVal uParam%, lpvParam As Any, ByVal fuWinIni%) As Integer
  130. Declare Function SelectObject Lib "GDI" (ByVal hDC%, ByVal hObject%) As Integer
  131. Declare Function CreateCompatibleDC Lib "GDI" (ByVal hDC%) As Integer
  132. Declare Function DeleteDC Lib "GDI" (ByVal hDC%) As Integer
  133. Declare Function StretchDIBits% Lib "GDI" (ByVal hDC%, ByVal X%, ByVal Y%, ByVal dX%, ByVal dY%, ByVal SrcX%, ByVal SrcY%, ByVal wSrcWidth%, ByVal wSrcHeight%, ByVal lpBits As Long, ByVal lpBitsInfo As Long, ByVal wUsage%, ByVal dwRop&)
  134. Declare Function SetStretchBltMode% Lib "GDI" (ByVal hDC%, ByVal nStretchMode%)
  135. Declare Function BeginPaint% Lib "User" (ByVal hWnd%, lpPaint As PAINTSTRUCT)
  136. Declare Sub EndPaint Lib "User" (ByVal hWnd%, lpPaint As PAINTSTRUCT)
  137. Declare Function SetDIBitsToDevice% Lib "GDI" (ByVal hDC%, ByVal X%, ByVal Y%, ByVal dX%, ByVal dY%, ByVal SrcX%, ByVal SrcY%, ByVal Scan%, ByVal NumScans%, ByVal Bits As Long, ByVal BitsInfo As Long, ByVal wUsage%)
  138. Declare Function DeleteObject% Lib "GDI" (ByVal hObject%)
  139. Declare Function SendMessageByNum& Lib "User" Alias "SendMessage" (ByVal hWnd%, ByVal wMsg%, ByVal wParam%, ByVal lParam&)
  140. Declare Function OpenClipboard% Lib "User" (ByVal hWnd%)
  141. Declare Function SetClipboardData% Lib "User" (ByVal wFormat%, ByVal hMem%)
  142. Declare Function CloseClipboard% Lib "User" ()
  143. Declare Sub AnimatePalette Lib "GDI" (ByVal hPalette%, ByVal wStartIndex%, ByVal wNumEntries%, lpPaletteColors As PALETTEENTRY)
  144. Declare Function CreatePalette% Lib "GDI" (lpLogPalette As LOGPALETTE)
  145. Declare Function SelectPalette% Lib "User" (ByVal hDC%, ByVal hPalette%, ByVal bForceBackground%)
  146. Declare Function RealizePalette% Lib "User" (ByVal hDC%)
  147. Declare F